package com.xxx.map;

import java.util.*;

/**
 * @version v1.0
 * @Description:
 * @Author zhanzhongxin
 * @Date 2021/7/21 15:17
 * @Copyright 博为峰
 */
public class HashMapDemo02 {
    public static void main(String[] args) {
        /*
          1.调用hashCode方法算出哈希值（数组中的存放位置）
            如果根据哈希值找到的此位置为空，则添加成功
            如果根据哈希值找到的此位置不为空，（此位置上存在一个或多个数据）
                如果哈希值与已存在的数据的哈希值不相同，则添加成功（链表存储）
                如果哈希值与已存在的某一个数据的哈希值相同，则调用equals()方法比较内容
                   如果equals()方法返回false,则添加成功（链表存储）
                   如果equals()方法返回true,则使用新value替换原value
         */
        HashMap<Student, String> hashMap = new HashMap<Student, String>();
        hashMap.put(new Student("张三", 20), "JD13");
        hashMap.put(new Student("李四", 30), "JD16");
        hashMap.put(new Student("李四", 30), "JD13");
        hashMap.put(new Student("王五", 50), "JD13");
//        keySet(hashMap);
        Set<Map.Entry<Student, String>> set = hashMap.entrySet();
        Iterator<Map.Entry<Student, String>> iterator = set.iterator();
        while (iterator.hasNext()) {
            Map.Entry<Student, String> next = iterator.next();
            Student key = next.getKey();
            String value = next.getValue();
            System.out.println(key + "," + value);
        }

//        System.out.println(hashMap);
    }

    public static void keySet(HashMap<Student, String> hashMap) {
        Set<Student> set = hashMap.keySet();
        Iterator<Student> iterator = set.iterator();
        while (iterator.hasNext()) {
            Student student = iterator.next();
            String s = hashMap.get(student);
            System.out.println("key:" + student.getName() + ",value:" + s);
        }
    }
}
